<?php

class IndexController extends Zend_Controller_Action {

    public function init() {
        
    }

    public function indexAction() {
        $tMercado = new DbTable_Mercado();

        $session = new Zend_Session_Namespace('role');
        $gps = new Zend_Session_Namespace('gps');

        $usuario = DbTable_Usuario::buscarUsuarioPorId($session->idUsuario);
        $coordenada = $usuario->getRegiaoPreferencia();
        
        $listas = $usuario->getListas();

        $mercados = array();
        $simulacoes = array(TipoSimulacao::MERCADO_PREFERIDO => array(), TipoSimulacao::GEOLOCALIZACAO => array(), TipoSimulacao::REGIAO_PREFERIDA => array());

        foreach ($tMercado->fetchAll() as $mercado) {
            if ($mercado->ehPreferido($usuario->id_usuario)) {
                array_push($mercados, array('tipo' => TipoSimulacao::MERCADO_PREFERIDO, 'id_mercado' => $mercado->id_mercado, 'nm_mercado' => $mercado->nm_mercado));
            } elseif (!is_null($coordenada) && $mercado->estahNaArea($coordenada->vl_latitude, $coordenada->vl_longitude)) {
                array_push($mercados, array('tipo' => TipoSimulacao::REGIAO_PREFERIDA, 'id_mercado' => $mercado->id_mercado, 'nm_mercado' => $mercado->nm_mercado));
            } elseif ($mercado->estahNaArea($gps->latitude, $gps->longitude)) {
                array_push($mercados, array('tipo' => TipoSimulacao::GEOLOCALIZACAO, 'id_mercado' => $mercado->id_mercado, 'nm_mercado' => $mercado->nm_mercado));
            }
        }

        foreach ($listas as $lista) {
            foreach ($mercados as $mercado) {
                $simulacoes[$mercado['tipo']][$lista->nm_lista][] = array('valor' => DbTable_ListaCompra::buscarItensPorMercadoSimulacao($lista->id_lista_compra, $mercado['id_mercado']),
                    'id' => $mercado['id_mercado'], 'nome' => $mercado['nm_mercado']);
            }
            break;
        }

        if (!is_null($this->getParam('reset'))) {
            $this->view->message = Messages::RESET_SENHA;
        }

        $this->view->simulacoes = $simulacoes;
        $this->view->usuarios = DbTable_Usuario::buscarUsuariosOrdenadosPorPontuacao();
    }
    
    
    public function livreAction(){       
        $mercado = strtoupper($this->getParam("mercado"));
        $produto = strtoupper($this->getParam("produto"));
        $produtosMercado = array();
        
        if ($produto != '' || $mercado != ''){
            try{
                $produtosMercado = DbTable_ProdutoMercado::buscarProdutoMercadoLike($produto, $mercado);
            }  catch (Exception $e){
                $code = $e->getCode();
                
                if ($code == TipoException::PRODUTO_INEXISTENTE){
                    $this->view->error = Messages::PRODUTO_INEXISTENTE;
                }
            }
        
        }
        $this->view->produtos = $produtosMercado;
    }

    public function gpsAction() {
        $this->_helper->viewRenderer->setNoRender();
        $this->_helper->layout->disableLayout();

        $session = new Zend_Session_Namespace('gps');
        $session->latitude = $this->getParam('latitude');
        $session->longitude = $this->getParam('longitude');
    }

}
